package chapter_05_builder.classic;

/**
 * Created by CharloYao on 2017/3/14.
 * 具体建造者类；它实现了抽象建造者类，实现了产品具体构造和装配的方法。
 * 定义并明确他所创建的复杂对象
 * 也可以定义一个方法返回创建好的复杂对象
 */
public class ConcreteBuilder implements Builder {

    private Product product = new Product();

    @Override
    public void buildPartA() {
        product.setPartA("A 组装完成");
    }

    @Override
    public void buildPartB() {
        product.setPartB("B 组装完成");
    }

    @Override
    public void buildPartC() {
        product.setPartC("C 组装完成");
    }

    @Override
    public Product getProduct() {
        return product;
    }

    /**
     * 返回顺序组装的产品
     * @return
     */
    public Product getOrderedProduct(){
        buildPartA();
        buildPartB();
        buildPartC();
        return product;
    }

    public Product getOrderedDESCProduct(){
        buildPartC();
        buildPartB();
        buildPartA();
        return product;
    }
}
